#include <iostream>
#include <cstring>
#include <vector>
#include <queue>

using namespace std;

//struct TreeNode
//{
//	int val;
//	TreeNode* left;
//	TreeNode* right;
//};
//
//TreeNode* deleteNode(TreeNode* root, int target)
//{
//	if (!root) return nullptr;
//
//	root->left = deleteNode(root->left, target);
//	root->right = deleteNode(root->right, target);
//	if (!root->left && !root->right && root->val == target)
//	{
//		delete root;
//		return nullptr;
//	}
//
//	return root;
//}
//
//class big
//{
//public:
//	string mul(const string& a, const string& b)
//	{
//		int m = a.size();
//		int n = b.size();
//		// 12
//		// 15
//		vector<int> ret(m+n);
//
//		for (int i = m - 1; i >= 0; i--)
//		{
//			for (int j = n - 1; j >= 0; j--)
//			{
//				int x = (a[i] - '0') * (b[j] - '0');
//				int sum = ret[i + j + 1] + x;
//				ret[i + j + 1] = sum % 10;
//				ret[i + j] += sum / 10;
//			}
//		}
//
//		while (ret.size() > 1 && ret.back() == 0)
//		{
//			ret.pop_back();
//		}
//
//		string res;
//		for (auto e : ret)
//		{
//			res.push_back(e + '0');
//		}
//
//		return res;
//	}
//};
//
//
//struct Node
//{
//	vector<int> v;
//};
//
//vector<int> func(const vector<Node>& s)
//{
//	int n = s.size();
//	vector<int> in(n);
//	vector<vector<int>> graph(n);
//
//
//	for (int i= 0; i < n; i++)
//	{
//		for (auto e : s[i].v)
//		{
//			in[e]++;
//
//		}
//	}
//
//	queue<int> q;
//	for (int i = 0; i < n; i++)
//	{
//		if (in[i] == 0)
//		{
//			q.push(i);
//		}
//	}
//
//	// 
//	vector<int> ret;
//	while (!q.empty())
//	{
//		int val = q.front();
//		q.pop();
//		ret.push_back(val);
//
//		for (auto e : graph[val])
//		{
//			if (--in[e] == 0)
//			{
//				q.push(e);
//			}
//		}
//	}
//}


struct Node
{
	Node()
	{
		cout << "Node()" << endl;
	}
	Node(int x, int y)
	{
		_x = x;
		_y = y;
		cout << "Node(int x,int y)" << endl;
	}

	int _x;
	int _y;
};

int main()
{
	//big b;
	//string ret = b.mul("12", "12");
	//cout << ret << endl;
		
	Node n;


	return 0;
}